package com.wkhyapp.lm.http;



import com.wkhyapp.lm.http.net.AddGoodsRequest;
import com.wkhyapp.lm.http.net.BaseRequest;
import com.wkhyapp.lm.http.net.CategorysAddRequest;
import com.wkhyapp.lm.http.net.CheckVersionDto;
import com.wkhyapp.lm.http.net.CreateVirtualRequest;
import com.wkhyapp.lm.http.net.FansListRequest;
import com.wkhyapp.lm.http.net.FeedbackRequest;
import com.wkhyapp.lm.http.net.GoodsInfoRequest;
import com.wkhyapp.lm.http.net.GoodsListRequest;
import com.wkhyapp.lm.http.net.GoodsReq;
import com.wkhyapp.lm.http.net.GrabAlbumRequest;
import com.wkhyapp.lm.http.net.MemberFollowRequest;
import com.wkhyapp.lm.http.net.MemberListRequest;
import com.wkhyapp.lm.http.net.NoticeRequest;
import com.wkhyapp.lm.http.net.PhoneLoginRequest;
import com.wkhyapp.lm.http.net.RefreshGoodsRequest;
import com.wkhyapp.lm.http.net.SearchRequest;
import com.wkhyapp.lm.http.net.ShopListRequest;
import com.wkhyapp.lm.http.net.SuperResponse;
import com.wkhyapp.lm.http.net.SupplierRequest;
import com.wkhyapp.lm.http.net.UpdateUserRequest;
import com.wkhyapp.lm.http.net.UserListRequest;
import com.wkhyapp.lm.http.vo.Banner;
import com.wkhyapp.lm.http.vo.CCategory;
import com.wkhyapp.lm.http.vo.Category;
import com.wkhyapp.lm.http.vo.Fans;
import com.wkhyapp.lm.http.vo.Follows;
import com.wkhyapp.lm.http.vo.Goods;
import com.wkhyapp.lm.http.vo.Market;
import com.wkhyapp.lm.http.vo.Member;
import com.wkhyapp.lm.http.vo.Notice;
import com.wkhyapp.lm.http.vo.Shop;
import com.wkhyapp.lm.http.vo.ThinkUser;

import java.util.List;

import okhttp3.ResponseBody;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Streaming;
import retrofit2.http.Url;
import rx.Observable;

public interface ApiStores {

       String API_URL = "http://120.25.101.212:8889/";
     //String API_URL = "http://192.168.3.22:8889/";
    // String API_URL = "http://192.168.1.100:8889/";

    /**
     * 账号密码登录
     * @param t
     * @returns
     */
//    @POST("/app/login/loginByPwd")
//    Observable<SuperResponse<APP_Member>> loginByPwd(@Body LoginRequest t);

    @Streaming
    @GET
    Observable<ResponseBody> downloadApp(@Url String url);

    @POST("app/home/getCategorys")
    Observable<SuperResponse<Category>> getCategory(@Body BaseRequest t);

    @POST("app/home/newlySettled")
    Observable<SuperResponse<Member>> newlySettled(@Body BaseRequest t);

    @POST("/app/home/memberList")
    Observable<SuperResponse<Member>> memberList(@Body MemberListRequest t);

    @POST("/app/home/getBanners")
    Observable<SuperResponse<Banner>> banners(@Body MemberListRequest t);

    @POST("app/shop/districts")
    Observable<SuperResponse<Market>> markets(@Body MemberListRequest t);

    @POST("app/home/goods")
    Observable<SuperResponse<Goods>> goods(@Body GoodsListRequest t);

    @POST("app/home/notices")
    Observable<SuperResponse<Notice>> notices(@Body NoticeRequest t);

    @POST("app/shop/carefullyChosenShop")
    Observable<SuperResponse<Shop>> shop(@Body ShopListRequest t);

    @POST("app/my/findInfoByUserId")
    Observable<SuperResponse<Member>> memberInfo(@Body BaseRequest t);

    @POST("app/my/fansList")
    Observable<SuperResponse<Fans>> fansList(@Body FansListRequest t);

    @POST("app/my/followList")
    Observable<SuperResponse<Fans>> followList(@Body FansListRequest t);

    @POST("app/my/collection")
    Observable<SuperResponse<Goods>> collection(@Body FansListRequest t);

    @POST("app/home/popularityRanking")
    Observable<SuperResponse<Member>> popularityRanking(@Body BaseRequest t);

    @POST("app/shop/categorys")
    Observable<SuperResponse<Category>> userCategorys(@Body BaseRequest t);

    @POST("app/shop/goodsList")
    Observable<SuperResponse<Goods>> shopGoodsList(@Body GoodsListRequest t);

    @POST("app/shop/getAlbumAdd")
    Observable<SuperResponse<String>> getAlbumAdd(@Body GrabAlbumRequest t);


    @POST("app/home/goodsInfo")
    Observable<SuperResponse<Goods>> goodsInfo(@Body GoodsInfoRequest t);

    @POST("/app/shop/delGoods")
    Observable<SuperResponse<String>> delGoods(@Body GoodsInfoRequest t);

    @POST("/app/shop/setUp")
    Observable<SuperResponse<String>> setUp(@Body GoodsInfoRequest t);

    @POST("app/shop/info")
    Observable<SuperResponse<Member>> shopInfo(@Body BaseRequest t);

    @POST("app/shop/clearAlbumAddr")
    Observable<SuperResponse<String>> clearAlbumAddr(@Body BaseRequest t);

    @POST("app/home/token")
    Observable<SuperResponse<String>> getUploadToken(@Body BaseRequest t);

    @POST("app/shop/addGoods")
    Observable<SuperResponse<String>> addGoods(@Body GoodsReq t);


    @POST("app/shop/upateGoods")
    Observable<SuperResponse<String>> upateGoods(@Body GoodsReq t);


    @POST("app/shop/addGoodsListForGrab")
    Observable<SuperResponse<String>> addGoodsForGrab(@Body AddGoodsRequest t);


    @POST("app/home/searchByPicture")
    Observable<SuperResponse<Goods>> searchByPicture(@Body GoodsListRequest t);

    @POST("app/home/search")
    Observable<SuperResponse<Goods>> search(@Body SearchRequest t);

    @POST("app/home/searchShop")
    Observable<SuperResponse<Member>> searchShop(@Body SearchRequest t);


    @POST("/app/shop/followMember")
    Observable<SuperResponse<Follows>> followMember(@Body MemberFollowRequest t);


    @POST("/app/shop/followGoods")
    Observable<SuperResponse<String>> followGoods(@Body GoodsInfoRequest t);

    @POST("/app/home/supplier")
    Observable<SuperResponse<Follows>> supplier(@Body SupplierRequest t);

    @POST("/app/my/feedback")
    Observable<SuperResponse<String>> feedback(@Body FeedbackRequest t);

    @POST("/app/home/marketList")
    Observable<SuperResponse<Market>> marketList(@Body BaseRequest t);

    @POST("/app/shop/grabAlbum")
    Observable<SuperResponse<Goods>> grabAlbum(@Body GrabAlbumRequest t);


    @POST("app/shop/memberCategorysAdd")
    Observable<SuperResponse<String>> memberCategorysAdd(@Body CategorysAddRequest t);


    @POST("app/shop/memberCategorysUpdate")
    Observable<SuperResponse<String>> memberCategorysUpdate(@Body CategorysAddRequest t);

    @POST("app/my/updateInfo")
    Observable<SuperResponse<String>> updateInfo(@Body UpdateUserRequest t);
    @POST("app/my/updateHead")
    Observable<SuperResponse<String>> updateHead(@Body UpdateUserRequest t);

    @POST("app/shop/refreshGoods")
    Observable<SuperResponse<String>> refreshGoods(@Body RefreshGoodsRequest t);

    @POST("app/login/account")
    Observable<SuperResponse<Member>> login(@Body PhoneLoginRequest t);

    @POST("app/login/updatePwd")
    Observable<SuperResponse<Member>> updatePwd(@Body PhoneLoginRequest t);

    @POST("app/login/getCode")
    Observable<SuperResponse<String>> getCode(@Body PhoneLoginRequest t);

    @POST("app/login/codeVer")
    Observable<SuperResponse<String>> codeVer(@Body PhoneLoginRequest t);

    @POST("app/login/delMember")
    Observable<SuperResponse<String>> delMember(@Body BaseRequest t);

    @POST("/web/user/think-user/list")
    Observable<SuperResponse<ThinkUser>> syhy(@Body UserListRequest t);

    @POST("/web/user/think-user/openedMerchants")
    Observable<SuperResponse<ThinkUser>> kthy(@Body UserListRequest t);

    @POST("/web/user/think-user/virtualList")
    Observable<SuperResponse<ThinkUser>> xnhy(@Body UserListRequest t);

    @POST("/web/user/think-user/createVirtual")
    Observable<SuperResponse<String>> createVirtual(@Body CreateVirtualRequest t);

    @POST("https://imbi.abtester.net/getclickid.php")
    Observable<SuperResponse<String>> getclickid(@Body BaseRequest t);

    @POST("app/home/addViews")
    Observable<SuperResponse<String>> addViews(@Body BaseRequest t);

    @POST("app/home/addhots")
    Observable<SuperResponse<String>> addhots(@Body BaseRequest t);

    @POST("app/home/updateWcharCopy")
    Observable<SuperResponse<String>> updateWcharCopy(@Body BaseRequest t);

    @POST("app/my/delCollection")
    Observable<SuperResponse<String>> delCollection(@Body GoodsInfoRequest t);

    @POST("app/home/category")
    Observable<SuperResponse<CCategory>> category(@Body BaseRequest t);

    @POST("app/shop/checkVersion")
    Observable<SuperResponse<String>> checkVersion(@Body CheckVersionDto t);


}
